/**
 * 全局同步任务管理器初始化工具
 * 提供React Hook用于在应用启动时初始化全局同步任务管理器
 */

import { useEffect } from 'react';
import { useSyncTaskProgress } from '../hooks/useSyncTaskProgress';
import { globalSyncTaskManager } from './globalSyncTaskManager';

/**
 * 全局同步任务管理器初始化Hook
 * 在应用启动时调用，确保全局管理器正确初始化
 */
export const useGlobalSyncTaskManagerInit = () => {
  const syncProgressHook = useSyncTaskProgress();

  useEffect(() => {
    // 只在未初始化时才初始化，避免重复初始化
    if (!globalSyncTaskManager.isReady()) {
      globalSyncTaskManager.initialize(syncProgressHook);
    } else {
      // 如果已经初始化，只更新hook引用
      globalSyncTaskManager.updateHooks(syncProgressHook);
    }
  }, [syncProgressHook]); // 恢复依赖，但使用更安全的初始化检查

  // 监听页面卸载事件来清理资源
  useEffect(() => {
    const handleBeforeUnload = () => {
      globalSyncTaskManager.clearAllMonitoring();
    };

    window.addEventListener('beforeunload', handleBeforeUnload);

    return () => {
      window.removeEventListener('beforeunload', handleBeforeUnload);
    };
  }, []);
};

/**
 * 检查全局同步任务管理器是否已准备就绪
 */
export const isGlobalSyncTaskManagerReady = (): boolean => {
  return globalSyncTaskManager.isReady();
};

/**
 * 获取全局同步任务管理器实例
 * 仅在确认已初始化后使用
 */
export const getGlobalSyncTaskManager = () => {
  if (!globalSyncTaskManager.isReady()) {
    console.warn('⚠️ 全局同步任务管理器尚未初始化，请确保在App组件中调用了useGlobalSyncTaskManagerInit');
    return null;
  }
  return globalSyncTaskManager;
};
